package bd;

/*
 * Esse arquivo é parte do Software new Recicle
 * 
 * Copyright (C) 2011-$AnoCorrente$ Eduardo Moreira Barbosa
 * Copyright (C) 2011-$AnoCorrente$ João dos Santos Gonçalves
 * Copyright (C) 2011-$AnoCorrente$ Lucas Ximenes da Fonseca
 * 
 * new Recicle é um Software Livre: Você pode redistribuí-lo e/ou modificá-lo
 * de acordo com os termos da Licença Pública Geral GNU (GNU General Public License)
 * conforme publicada pela Free Software Foundation (FSF). Essa permissão é atribuída
 * na versão 3 da Licença, ou (na sua opinião) qualquer versão.
 * 
 * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este programa,
 * se não, escreva para a Fundação do Software Livre(FSF) Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 * 
 * Se você tiver alguma dúvida e/ou quiser dar suporte ao desenvolvimento, favor entrar em
 * contato nos e-mails <barbosa.edrd@gmail.com>, <john.jsg@hotmail.com>, <lxf.lucas@gmail.com>.
 */

import java.sql.SQLException;
import rh.Voluntario;

public class BancoVoluntario {

    private String comando;
    private String pesquisa;
    private String Id = "";

    /**
     * Cadastro de Voluntários
     * 
     * @exception       Exceção SQL
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void cadastrar() {
        comando = "Insert into Ervilha.Voluntario (Nome, Senha, "
                + "Cpf, Sexo, Telefone, Celular, Email, Imagem)"
                + "Values ('" + Voluntario.getVoluntario().getNome() + "'"
                + ",'" + Voluntario.getVoluntario().getSenha() + "'"
                + ",'" + Voluntario.getVoluntario().getCpf() + "'"
                + ",'" + Voluntario.getVoluntario().getSexo() + "'"
                + ",'" + Voluntario.getVoluntario().getTelefone() + "'"
                + ",'" + Voluntario.getVoluntario().getCelular() + "'"
                + ",'" + Voluntario.getVoluntario().getEmail() + "'"
                + ",'" + Voluntario.getVoluntario().getImagem() + "')";
        try {
            BancoDeDados.STATEMENT = BancoDeDados.CONNECTION.createStatement();
            try {
                BancoDeDados.STATEMENT.executeUpdate(comando);
            } catch (SQLException sQLException) {
                sQLException.printStackTrace();
            }
        } catch (SQLException sQLException) {
            sQLException.printStackTrace();
        }
    }

    /**
     * Remoção de Voluntários
     * 
     * @param comparar  Voluntário a ser excluido do Banco de dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public void apagar(String comparar) {
        try {
            comando = "Delete from Ervilha.Voluntario where Nome ='" + comparar + "'";
            BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(comando);
            BancoDeDados.PREPAREDSTATEMENT.execute();
            BancoDeDados.PREPAREDSTATEMENT.close();
        } catch (SQLException sQLException) {
            sQLException.printStackTrace();
        }
    }

    
    /**
     * Pesquisar no Banco de Dados
     * 
     * @param comparar  Voluntário a ser pesquisado no Banco de Dados
     * @return          Voluntário se existir no Banco de Dados ou null se não existir
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String pesquisarBanco(String comparar) {
        String sql = "Select * from Ervilha.Voluntario";

        try {
            BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
            BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
            while (BancoDeDados.RESULTSET.next()) {
                String nome = BancoDeDados.RESULTSET.getString("Nome");
                String senha = BancoDeDados.RESULTSET.getString("Senha");
                String cpf = BancoDeDados.RESULTSET.getString("Cpf");
                String sexo = BancoDeDados.RESULTSET.getString("Sexo");
                String telefone = BancoDeDados.RESULTSET.getString("Telefone");
                String celular = BancoDeDados.RESULTSET.getString("Celular");
                String email = BancoDeDados.RESULTSET.getString("Email");
                String imagem = BancoDeDados.RESULTSET.getString("Imagem");

                pesquisa = nome + "#" + senha + "#" + cpf + "#" + sexo + "#"
                        + telefone + "#" + celular + "#" + email + "#" + imagem;

                if (nome.equals(comparar)) {
                    return nome;
                }
            }
        } catch (SQLException sQLException) {
            sQLException.printStackTrace();
        }
        return null;
    }

    /**
     * Retornar Pesquisa no Banco de Dados
     * 
     * @see             Método pesquisarBanco
     * @return          Todos os dados de um Voluntário
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
     
    public String retornarBanco() {
        return pesquisa;
    }

    /**
     * Pesquisar os Voluntários
     * 
     * @return          null se não existir Voluntário no Banco de Dados
     * @exception       Exceção SQL
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    public String pesquisarId() {
        String sql = "Select * from Ervilha.Voluntario";
        try {
            BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
            BancoDeDados.RESULTSET = BancoDeDados.PREPAREDSTATEMENT.executeQuery();
            while (BancoDeDados.RESULTSET.next()) {
                String nome = BancoDeDados.RESULTSET.getString("Nome");
                Id += nome + "#";
            }
        } catch (SQLException sQLException) {
            sQLException.printStackTrace();
        }
        return null;
    }

    /**
     * Retornar os Voluntários
     * 
     * @see             Método pesquisarId
     * @return          Todos os Voluntários
     * @author          Eduardo Moreira Barbosa
     * @author          João dos Santos Gonçalves
     * @author          Lucas Ximenes da Fonseca
     */
    
    public String[] retornarId() {
        String[] ss = Id.split("#");
        return ss;
    }

    /**
     * Alterar Associado
     * 
     * @see                 Classe Voluntario
     * @param voluntario    Novas características do Voluntário
     * @param pesquisa      Voluntário a ser modificado no Banco de Dados
     * @exception           Exceção SQL
     * @author              Eduardo Moreira Barbosa
     * @author              João dos Santos Gonçalves
     * @author              Lucas Ximenes da Fonseca
     */
    
    public void alterar(Voluntario voluntario, String pesquisa) {
        String sql = "Update Ervilha.Voluntario set Nome = ?, Senha = ?, Cpf = ?,"
                + "Sexo = ?, Telefone = ?, Celular = ?,"
                + "Email = ?, Imagem = ? where Nome = ?";
        try {
            BancoDeDados.PREPAREDSTATEMENT = BancoDeDados.CONNECTION.prepareStatement(sql);
            BancoDeDados.PREPAREDSTATEMENT.setString(1, voluntario.getNome());
            BancoDeDados.PREPAREDSTATEMENT.setString(2, voluntario.getSenha());
            BancoDeDados.PREPAREDSTATEMENT.setString(3, voluntario.getCpf());
            BancoDeDados.PREPAREDSTATEMENT.setString(4, voluntario.getSexo());
            BancoDeDados.PREPAREDSTATEMENT.setString(5, voluntario.getTelefone());
            BancoDeDados.PREPAREDSTATEMENT.setString(6, voluntario.getCelular());
            BancoDeDados.PREPAREDSTATEMENT.setString(7, voluntario.getEmail());
            BancoDeDados.PREPAREDSTATEMENT.setString(8, voluntario.getImagem());
            BancoDeDados.PREPAREDSTATEMENT.setString(9, pesquisa);
            BancoDeDados.PREPAREDSTATEMENT.execute();
            BancoDeDados.PREPAREDSTATEMENT.close();
        } catch (SQLException sQLException) {
            sQLException.printStackTrace();
        }
    }
}
